﻿#pragma once
#include "stackshap_data.h"
#include "stackshap.h"

class StackShapManager
{
public:
	StackShapManager();
	~StackShapManager();
	int Init();
	/****************************************************************************
	 * 功能: 根据物料尺寸信息选择垛形
	 * 传参: sku:物料尺寸, plate:托盘尺寸
	 * 返回值: 成功返回正确的垛形信息id >0;
	 ****************************************************************************/
	stack::StackInfo ChooseStackForSku(const Size& sku, const Size& plate);
	/****************************************************************************
	 * 功能: 获取物料坐标
	 * 传参: id:垛形编号，sku:物料尺寸,odd 奇数层/偶数层， skupos:输出的物料信息
	 * 返回值: 获取是否成功
	 ****************************************************************************/
	bool GetSkuPosition(int id, const Size& sku, bool odd, QVector<stack::SkuPosInfo>& skupos);

	/****************************************************************************
	 * 功能: 获取所有垛形列表
	 * 传参:
	 * 返回值: id+name
	 ****************************************************************************/
	QStringList GetStackList();

	/****************************************************************************
	 * 功能: 获取id对应垛形的信息
	 * 传参: id
	 * 返回值: id+name
	 ****************************************************************************/
	stack::StackInfo GetStackInfoById(int id);
private:
	QMap<int, StackShap*> m_fixstackmap;
	QMap<int, StackShap*> m_stackmap;
};
